草庐IT

Java TCP Socket等待空闲?

全部标签

c# - 测试显示 "await"明显更慢,即使等待的对象已经完成

我想通过使用await/async来测试程序的开销。为了对此进行测试,我编写了以下测试类:publicclassEntity:INotifyCompletion{privateActioncontinuation;privateinti;publicvoidOnCompleted(Actioncontinuation){this.continuation=continuation;}publicEntityGetAwaiter(){returnthis;}publicEntityGetResult(){returnthis;}publicboolIsCompleted{get{retu

c# - 当应用程序退出时,如何等待我的异步操作完成?

如果用户执行删除项目等操作,它会立即从UI中删除它们,然后使用TPL在后台线程上将它们从数据库中删除。问题是,如果用户在后台线程结束之前退出应用程序,则该项目实际上不会被删除。在关闭应用程序之前是否有等待异步操作完成的标准方法?我的异步调用是这样的:if(MyObjectList.Contains(obj))MyObjectList.Remove(obj);Task.Factory.StartNew(()=>DAL.DeleteObject(obj));更新这是我使用的最终代码。我很高兴看到它按预期工作,但如果我可以改进它,请告诉我。我还有很多东西要学:)publicpartialcl

c# - 返回任务或等待和 ConfigureAwait(false)

假设有这样一个方法的服务库publicasyncTaskGetPersonAsync(Guidid){returnawaitGetFromDbAsync(id);}遵循SynchronizationContext的最佳实践更好用publicasyncTaskGetPersonAsync(Guidid){returnawaitGetFromDbAsync(id).ConfigureAwait(false);}但是当你只有一个操作时(我认为)最好直接返回任务。参见Attheendofanasyncmethod,shouldIreturnorawait?publicTaskGetPerson

c# - 异步/等待、ThreadPool 和 SetApartmentState

我想使用awaitTask.Run(DoWork),在ThreadPool上做一些重复的单线程计算工作。问题是,我需要在DoWork中使用STACOM对象,所以我想我不能使用ThreadPool,因为我不能改变池线程的单元状态。如何在这种情况下仍然使用async/await?使用自定义任务调度程序创建我自己的STA线程池听起来像是一项繁重的工作。 最佳答案 StephenToub已经写了一个StaTaskScheduler(archive);我建议您使用它。然后您可以使用该TaskScheduler构造一个TaskFactory。T

c# - 使用 .NET 4.5 async 将 Azure blob 异步下载到字符串,等待

我正在尝试使用.NET4.5async&await实现完全异步blob下载。假设整个blob可以一次放入内存中,并且我们希望将其保存在string中。代码:publicasyncTaskDownloadTextAsync(ICloudBlobblob){using(StreammemoryStream=newMemoryStream()){IAsyncResultasyncResult=blob.BeginDownloadToStream(memoryStream,null,null);awaitTask.Factory.FromAsync(asyncResult,(r)=>{blob

c# - 如何使用定时器等待?

我试图通过使用计时器来延迟我的方法中的事件,但是我不一定了解如何使用计时器来等待。我将计时器设置为2秒,但是当我运行这段代码时,最后一次调用没有2秒延迟。Timertimer=newTimer();timer.Tick+=newEventHandler(timer_Tick);//Everytimetimerticks,timer_Tickwillbecalledtimer.Interval=(1000)*(2);//Timerwilltickevertsecondtimer.Enabled=true;//Enablethetimervoidtimer_Tick(objectsende

c# - 如何在 Silverlight 4 中等待状态改变转换完成?

我需要更改控件的状态然后执行一些操作。具体来说,我想在隐藏控件之前运行动画。我想做这样的事情:VisualStateManager.GoToState(control,"Hidden",true);//waituntilthetransitionanimationisfinishedParentControl.Children.Remove(control);问题在于过渡动画是异步运行的,因此在动画开始后控件会立即从可视化树中删除。那么我该如何等待动画完成呢? 最佳答案 您可以将Storyboard.Completed事件处理程序附

C# 异步任务无限期等待

我正在尝试使用“async”和“await”提供的功能来异步下载网页内容,但我遇到了任务永远等待完成的问题。您能告诉我以下代码片段有什么问题吗?protectedvoidPage_Load(objectsender,EventArgse){varwebsites=newstring[]{"http://www.cnn.com","http://www.foxnews.com"};vartasks=websites.Select(GenerateSomeContent).ToList();//Idon'twanttouse'awaitTasks.WhenAll(tasks)'asInee

c# - 无需等待即可开始任务

我正在使用asp.netmvc,我想在用户到达站点主页时从数据库中缓存一些有关用户的数据。所以当用户请求主页时,我想调用一个异步方法,它进行数据库调用和缓存数据。任何这样做的例子都会很棒。 最佳答案 publicclassHomeController:Controller{publicActionResultIndex(){ViewData["Message"]="WelcometoASP.NETMVC!";Task.Run(()=>DoSomeAsyncStuff());returnView();}privateasyncvoid

c# - RunAsync - 如何等待 UI 线程上的工作完成?

在等待Dispatcher.RunAsync时,继续会在工作安排时发生,而不是在工作完成时发生。我如何等待工作完成?编辑我最初的问题假设过早继续是由API的设计引起的,所以这是真正的问题。当使用异步委托(delegate)等待Dispatcher.RunAsync时,在委托(delegate)代码中使用await时,遇到await时会继续,不是在工作完成时。我如何等待工作完成?编辑2您可能需要分派(dispatch)已在UI线程上的工作的一个原因是解决微妙的时间和布局问题。视觉树中元素的大小和位置的值不断变化是很常见的,为UI的后续迭代安排工作会有所帮助。